/// <reference path="main.js" />

var monedagentno = "";

//登录成功
function onLogin(extNum) {
  //坐席登录成功，开始注册sip phone
  timeLog("onlogin:" + extNum);
  //系统登录后会自动示忙，避免人员未就绪立即分配电话进来， 预留 x 秒，自动实现， 具体是否采用由开发人员斟酌
  setTimeout(() => FlashAgentX.sendAction('setSeatState', { type: 0 }), 2000);
  callStateHelper.updateCallState(callStateHelper.LOGIN); //处理登录后的界面初始化
}

/**
 * @param {string} id
 * @param {(this: HTMLElement, funValue: number, ev: MouseEvent) => void} handler
 */
const addClickListener = (id, handler) => {
  const el = document.getElementById(id)
  el && el.addEventListener('click', function(e) {
    btnIsEnable(this) && handler.call(this, +this.fun_value, e)
  })
}

document.addEventListener('DOMContentLoaded', () => {
  // 上线、下线、应答、拒绝等4合一
  addClickListener('btn_onoff_line', function(funValue) {
    if (funValue === 0) {
      FlashAgentX.sendAction('online')
    } else if (funValue === 1) {
      FlashAgentX.sendAction('offline')
    }
  })

  // 坐席忙闲控制，有多个子状态，不托管给系统管理按钮状态
  addClickListener('btn_ready_busy', function() {
    sendEventToParentWindow('changeSeatState')
  })

  // 签入 0， 签出1
  addClickListener('btn_login', function(funValue) {
    if (funValue === 0) {
      FlashAgentX.sendAction('checkin')
    } else if (funValue === 1) {
      FlashAgentX.sendAction('checkout')
    }
  })

  addClickListener('btn_connect', function() {
    FlashAgentX.connect()
  })

  // 保持 0， 恢复 1
  addClickListener('btn_hold_unhold', function(funValue) {
    if (funValue === 0) {
      FlashAgentX.sendAction('holduser')
    } else if (funValue === 1) {
      FlashAgentX.sendAction('unholduser')
    }
  })

  // 转移IVR前，弹出ivr节点表
  addClickListener('btn_toivr', function() {
    sendEventToParentWindow('changeIVR')
  })

  // 呼出、挂机
  addClickListener('btn_callout', function(funValue) {
    if (funValue === 0) {
      const input = document.getElementById('dialout_input')
      if (input && input.value) {
        sendEventToParentWindow('OnCustomCall', input.value, '')
      } else {
        timeLog('请输入电话')
      }
    } else if (funValue === 1) {
      FlashAgentX.sendAction('dropcall')
    }
  })

  /**
   * 咨询坐席复合键 咨询准备 + 结束咨询
   * 咨询前准备--获取队列坐席状态表
   * 20160920 58项目，咨询内线、外线合并，采用动态创建输入框实现工号或电话输入
   */
  addClickListener('btn_consult', function(funValue) {
    if (funValue === 0) {
      sendEventToParentWindow('changeConsult')
    } else if (funValue === 1) {
      FlashAgentX.sendAction('freeseat')
    } else if (funValue === 1) {
      FlashAgentX.sendAction('droptouser')
    }
  })

  // 转移坐席，0转内，1转外
  addClickListener('btn_transfer', function(funValue) {
    if (funValue === 0) { // 转坐席
      FlashAgentX.sendAction('transseat')
    } else if (funValue === 1) { // 坐席咨询后的退出 释放被咨询坐席
      FlashAgentX.sendAction('transcall')
    }
  })

  // 会议建立与拆除 0=内三方，1=开始外三，2=结束内三方，3=结束外三 
  addClickListener('btn_confence', function(funValue) {
    if ([0, 1].includes(funValue)) { // 建立三方
      FlashAgentX.sendAction('inmeet')
    } else if ([2, 3].includes(funValue)) { // 退出三方，将用户接回 内，外一样的
      FlashAgentX.sendAction('unholduser')
    }
  })

  addClickListener('btn_monitor', function() {
    window.open(
      'agc_monitor.html',
      'monitorwin',
      'height=600,width=800,top=100,left=200,toolbar=no,menubar=no,scrollbars=no,resizable=no,location=no,status=no'
    )
  })

  addClickListener('btn_monqueue', function() {
    window.open(
      'queue_monitor.html',
      'monquewin',
      'height=600,width=800,top=100,left=200,toolbar=no,menubar=no,scrollbars=no,resizable=no,location=no,status=no'
    )
  })

  addClickListener('btn_stop_monitor', function() {
    FlashAgentX.sendAction('outmoniter', { toseatno: monedagentno })
  })

  addClickListener('btn_force_join', function(funValue) {
    if (funValue === 0) { // 开始插话
      FlashAgentX.sendAction('insert')
    } else if (funValue === 1) { // 结束插话
      FlashAgentX.sendAction('outinsert')
    }
  })

  addClickListener('btn_whisper', function(funValue) {
    if (funValue === 0) { // 开始耳语
      FlashAgentX.sendAction('whisper')
    } else if (funValue === 1) { // 结束耳语
      FlashAgentX.sendAction('outwhisper')
    }
  })

  addClickListener('btn_tokeover', function(funValue) {
    if (funValue === 0) { // 拦截
      FlashAgentX.sendAction('robcall')
    } else if (funValue === 1) { // 挂机
      FlashAgentX.sendAction('dropcall')
    }
  })

  addClickListener('btn_force_hungup', function() {
    FlashAgentX.sendAction('stopcall')
  })
})

function OnRingTime(_evt) {
  timeLog("onRingTime  " + _evt.ringtime + " " + _evt.called);
  if (_evt.direct == 1) {
    //mod chenyl0826 发送来电通知
    console.log("执行呼入振铃:::" + _evt.caller);
    callStateHelper.updateCallState(callStateHelper.RING);
    return;
  }
  callStateHelper.updateCallState(callStateHelper.RING);
}

// 当坐席呼出流水后端记录成功后事件
function OnAnswer(_evt) {
  timeLog("onanswer：  " + _evt.anstime + " " + _evt.called);
  callStateHelper.updateCallState(callStateHelper.TALKING);
}

function OnAnswer3(_evt) {
  timeLog("OnAnswer3：  " + _evt.anstime3 + " " + _evt.called3);
  if (_evt.called3.length > 5) {  //外线
    callStateHelper.updateCallState(callStateHelper.CONSULT_USER);
  } else {  //内线
    callStateHelper.updateCallState(callStateHelper.CONSULT_AGC);
  }
}

var agentlists="";
var agentgetflag="0";
var entques="";
var entgetflag="0";

setTimeout(() => callStateHelper.updateCallState(callStateHelper.LOGOUT), 1000);
